From: Florian Müllner Date: Thu, 5 Dec 2019 13:12:47 +0000 (+0100) Subject: perf-helper: Add content for custom drawing X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~325 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3c4c37e4d0668d748ee792f7580defdf4780624a;p=gnome-shell.git perf-helper: Add content for custom drawing Drawing windows got a lot more involved with the advent of client-side decorations. Instead of accounting for visible and invisible borders, titlebar and shadows when necessary, just add an empty child for the custom drawing. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/887 --- diff --git a/src/shell-perf-helper.c b/src/shell-perf-helper.c index f115dcbdc..ba1754e02 100644 --- a/src/shell-perf-helper.c +++ b/src/shell-perf-helper.c @@ -119,9 +119,9 @@ on_window_map_event (GtkWidget *window, } static gboolean -on_window_draw (GtkWidget *window, - cairo_t *cr, - WindowInfo *info) +on_child_draw (GtkWidget *window, + cairo_t *cr, + WindowInfo *info) { cairo_rectangle_int_t allocation; double x_offset, y_offset; @@ -203,6 +203,7 @@ create_window (int width, gboolean redraws) { WindowInfo *info; + GtkWidget *child; info = g_new0 (WindowInfo, 1); info->width = width; @@ -218,10 +219,13 @@ create_window (int width, info->pending = TRUE; info->start_time = -1; + child = g_object_new (GTK_TYPE_BOX, "visible", TRUE, "app-paintable", TRUE, NULL); + gtk_container_add (GTK_CONTAINER (info->window), child); + gtk_widget_set_size_request (info->window, width, height); gtk_widget_set_app_paintable (info->window, TRUE); g_signal_connect (info->window, "map-event", G_CALLBACK (on_window_map_event), info); - g_signal_connect (info->window, "draw", G_CALLBACK (on_window_draw), info); + g_signal_connect (child, "draw", G_CALLBACK (on_child_draw), info); gtk_widget_show (info->window); if (info->redraws)